package com.gis3c.sys.service;

import com.gis3c.sys.entry.vo.AppModel;
import com.gis3c.sys.entry.vo.MenuCombination;
import com.gis3c.sys.entry.vo.MenuModel;
import com.gis3c.sys.entry.vo.MenuTreeModel;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * Created by hukekuan on 2017/12/22.
 */
public interface MenuService {
    /**
     * 根据应用编号获取所有菜单,目前只支持三层菜单
     * @param appId
     * @return
     */
    public List<MenuCombination> findMenuList(String appId);

    public List<MenuCombination> findMenuListForRole(Set<String> roleIds, String appId);

    /**
     * 获取系统的菜单并根据用户绑定选中状态
     * @param roleId
     * @param appId
     * @return
     */
    public List<MenuTreeModel> findMenuListForTree(String roleId,String appId);

    public List<MenuModel> findMenuList(String appId,String parentMenuId);

    /**
     * 加分页的菜单列表
     * @param appId
     * @param parentMenuId
     * @param pageSize
     * @param currentPage
     * @return
     */
    public Map<String,Object> findMenusByPage(String appId, String parentMenuId, Integer pageSize, Integer currentPage);

    /**
     * 根据菜单编号获取菜单父菜单编号
     * @param menuId
     * @return
     */
    public String findParentIdByMenuId(String menuId);

    /**
     * 根据菜单编号获取该菜单及所有子菜单
     * @param menuId
     * @return
     */
    public List<MenuModel> findChildMenusByMenuId(String menuId);

    /**
     * 创建子菜单
     * @param appId
     * @param menuModel
     */
    public void createMenu(String appId,MenuModel menuModel);

    /**
     * 根据菜单编号删除菜单及所有子菜单
     * @param menuIds
     * @return
     */
    public Integer deleteMenByIds(String[] menuIds);
}
